import java.util.HashMap;
import java.util.Map;

class Solution525 {
    public int findMaxLength(int[] nums) {
           int len = nums.length ;
           int[] arr = new int[len] ; 
           int max = 0 ; 
           Map<Integer,Integer> map = new HashMap<>() ;
           for(int i=0 ; i < len ; i++){
            arr[i] = nums[i] ; 
            if(arr[i] == 0){
                arr[i] = -1 ;
            }
           }
           int sum = 0 ; 
           map.put(0 , -1) ; 
           for(int i = 0 ; i < len ; i ++){
               sum += arr[i] ; 
               if(map.containsKey(sum)){
                int tmp = map.get(sum) ; 
                max = Math.max(max , i-tmp) ; 
               }else{
                map.put(sum , i) ; 
               }
           }
            return max ;

    }
}